package com.weed.core;

/**
 * <p>用于处理所有的异常。</p>
 * <p>异常号管理办法:</p>
 * <p>1、10000至19999核心的错误号。</p>
 * <p>2、20000至29999 RIA的错误号。</p>
 * @author Jason zhuo
 */
public class WeedException extends RuntimeException {
    protected Throwable cause = null;
    private String errorCode;

     /**
     * 不带参数的构造函数。
     */
    public WeedException() {
        super();
    }
    /**
     * 不带参数的构造函数。
     * @param errorCode 出错代码
     */
    public WeedException(String errorCode) {
        super(errorCode);
        this.errorCode = errorCode;
    }
    /**
     * 带出错信息的构造函数。
     * @param message 出错信息
     * @param errorCode 出错代码
     */
    public WeedException(String errorCode,String message) {
        super(errorCode + ":" + message);
        this.errorCode = errorCode;
    }
    /**
     * 异常原因。
     * @param cause 原因
     */
    public WeedException(Throwable cause){
        super(cause);
    }
    /**
     * 带出错原因的构造函数。
     * @param cause 出错的原因
     * @param errorCode 出错代码
     */
    public WeedException(String errorCode,Throwable cause) {
        this(errorCode,(cause == null) ? null : cause.toString(), cause);
    }
    /**
     * 带出错信息、原因的构造函数。
     * @param message 出错信息
     * @param cause 出错原因
     * @param errorCode 出错代码
     */
   public WeedException(String errorCode,String message, Throwable cause) {
        super(errorCode+ ":" + message + " (Caused by " + cause + ")");
        this.cause = cause;
        this.errorCode = errorCode;
    }
   /**
    * 原因。
    * @return
    */
    public Throwable getCause() {
        return (this.cause);
    }

    /**
     * @return the errorCode
     */
    public String getErrorCode() {
        return errorCode;
    }

    /**
     * @param errorCode the errorCode to set
     */
    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }
}
